// vuex：状态管理工具
import { login, getQuanXian } from '@/api/yonghu'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getUserInfo } from '@/api/yonghu'
import { Message } from 'element-ui'
export default {
  namespaced: true,
  // state存储数据的仓库
  state: {
    token: getToken(),
    userInfo: {},
    quanxian: {}
  },
  // 可以修改state里面的数据
  mutations: {
    // 存储token
    SET_TOKEN(state, token) {
      state.token = token
      setToken(token)
    },
    // 移除token
    REMOVE_TOKEN(state) {
      state.token = null
      removeToken()
    },
    // 保存用户信息
    SET_USERINFO(state, data) {
      state.userInfo = data
    },
    // 移除用户信息
    REMOVE_USERINFO(state) {
      state.userInfo = {}
    },
    // 保存用户权限
    SET_QUANXIAN(state, data) {
      state.quanxian = data
    }
  },
  // 异步，能触发mutations里的函数
  actions: {
    // 登录
    async login(store, data) {
      const res = await login(data)
      store.commit('SET_TOKEN', res.data.jwt)
      // 保存登录时的时间戳
      localStorage.setItem('loginTime', Date.now())
    },
    // 获取用户信息
    async getUserInfo(store) {
      const res = await getUserInfo()
      store.commit('SET_USERINFO', res.data)
    },
    // 获取当前用户权限
    async getUserQuanXian(store) {
      const res = await getQuanXian()
      store.commit('SET_QUANXIAN', res.data)
    },
    // 退出登录清空token和用户信息
    logout(store) {
      store.commit('REMOVE_TOKEN')
      store.commit('REMOVE_USERINFO')
      Message.success('退出成功')
    }
  }
}

